<html>
<head>
<TITLE>Description of CSE5317/4305</TITLE>
</head>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<center>
<H1>Description of CSE5317/4305</H1>
</center>
<p>
<table>
<tr><td><b>Class:</b></td><td>Tuesday and Thursday 11:00am-12:20pm</td></tr>
<tr><td><b>Instructor:</b></td><td><A HREF="http://lambda.uta.edu/">Leonidas Fegaras</A></td></tr>
<tr><td><b>Office:</b></td><td>GACB 115 (General Academic Classroom Bldg)</td></tr>
<tr><td><b>Phone:</b></td><td>(817) 272-3629</td></tr>
<tr><td><b>Email:</b></td><td><img align=top src="http://lambda.uta.edu/sig.jpg" ALIGN=middle></td></tr>
<tr><td><b>Office hours:</b></td><td>Tuesday and Thursday 12:30-2:00pm</td></tr>
</table>
<p>
<hr>
<p>
<dl>
<dt><b>Catalogue Description:</b>
<dd>Review of programming language structures, translation, and storage 
allocation. Introduction to context-free grammars and their 
description. Design and construction of compilers including
lexical analysis, parsing and code generation techniques. 
Error analysis and simple code optimizations will be introduced. <p>
<dt><b>Objectives:</b>
<dd>The goal of this course is to give a working knowledge of the basic techniques used in the
implementation of modern programming languages.
The course is centered around a substantial programming project:
implementing a complete compiler for a realistic language. Students successfully completing this course
will be able to apply the theory and methods learned during the course
to design and implement optimizing compilers for most programming
languages.
<p>
<dt><b>Prerequisites:</b>
<dd>Prerequisites: CSE3302 (Programming Languages), which requires both CSE3315 (Theoretical Concepts)
and CSE3322 (Computer Architecture I), or consent of instructor.<br>
Students must:
<ul>
<li>have knowledge and programming experience with Java;
<li>be familiar with the functions of modern computer architectures and be
able to program in an assembly language;
<li>be familiar with data structure concepts and algorithms (such as lists, trees, sorting, hashing, etc).
</ul>
Students without adequate preparation are at substantial risk of failing this course.
<p>
<dt><b>Required Textbook and Notes:</b>
<dd><ul>
<li>Andrew W. Appel: <a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=052182060X">Modern Compiler Implementation in Java, Second Edition</a>.
 Cambridge University Press, 2002.
<li>Lecture notes.
<li>Lecture slides (in PowerPoint), which are based on the lecture notes.
</ul>
<p>
<dt><b>Other Texts:</b>
<dd>You may find the following texts
useful for additional background and explanation:
<ul>
<li>A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman: Compilers: Principles, Techniques, and Tools, second edition, (this is the
classic red "Dragon" book), Addison-Wesley, 2007. This is the best reference manual on compiler construction in
existence, although it is sometimes considered hard to read.
<li>C. Fischer and R. LeBlanc, Crafting a compiler with C. Bejamin/Cummings, 1991.
Excellent textbook but terrible C code.
</ul><p>
<dt><b>Grading:</b>
<dd>The final grade will be based on
<ul>
<li>30% project
<li>20% first midterm exam
<li>20% second midterm exam
<li>30% final exam (comprehensive)
</ul>
The course work will be the same for graduates and undergraduates.
Final grades will be assigned according to the following scale:
<pre>
     A: score >= 90, B: 80 <= score < 90, C: 70 <= score < 80, D: 60 <= score < 70, F: score < 60,
</pre>
Sometimes, I use lower cutoff points, depending on the overall performance of the class. 
<p>
<dt><b>Reading Assignments:</b>
<dd>Completing reading assignments before the class period in which
the material is discussed is essential to success in this class.
Not all the assigned material will be covered in class, but you
will be responsible for it on exams.
<p>
<dt><b>Exams:</b>
<dd>All exams are closed-book and closed-notes.
The second midterm exam will cover the material of the second part of the course only,
while the final exam will cover the material
from the first lecture up to and including the last lecture.
Once the exam grades
are posted, you will have 10 business days to dispute your grade and
get your exam re-evaluated. No re-evaluation will be entertained after
the 10 day period. No makeup exams will be given unless there is a
justifiable reason (such as illness, sickness or death in the family).
If you miss an exam and you can prove that your reason is justifiable,
you should arrange with the instructor to take the makeup exam within
a week from the regular exam time. For any other case, you will get a zero
grade for the missed exam.
<p>
<dt><b>Project:</b>
<dd>The course project is to construct a compiler for a small programming language
and will involve: lexical analysis, parsing, semantic analysis (type-checking), and code generation
for a MIPS architecture. This project will be done in Java. The project is to be
completed in several stages spaced throughout the term
and will be done by groups of 3 students.
Project reports will be marked 20%-off per day.
No further extensions will be allowed. No excuses, no exceptions.
<p>
<dt><b>Cheating:</b>
<dd>You are allowed to collaborate with students of your project group only.
<b>No copying is permitted.</b> Cheating involves giving assistance
to or receiving assistance from members of other groups,
copying code from the web, etc.
I strictly adhere to the University of Texas at Arlington
rules and guidelines for handling violations of academic
dishonesty. Please refer to the pamphlet "CHEATING: Definitions and
Consequences" for additional information. You are required to sign and
return the statement about academic dishonesty. <b>If any one is caught
for cheating, or indulge in plagiarism or collusion on a
programming assignment or on a exam, the grade for the entire course will be
an automatic Fail grade (F).</b> 
<p>
<dt><b>Special Accommodations:</b>
<dd>If you require an accommodation based on disability, I would like to meet with you in the privacy of my office,
during the first week of the semester, to make sure you are appropriately accommodated.
<p>
<dt><b>Course web page:</b>
<dd><A HREF="index.html">http://lambda.uta.edu/cse5317/</A><br>
Please visit this web page often; it will contain class notes, solutions, etc.
<p>
<dt><b>Related web pages:</b>
<dd>
<ul>
<li><A HREF="spring08/index.html">cse5317 Spring 2008</a>
<li><a href="http://www.cs.cornell.edu/courses/cs412/2006sp/">Compiler course at Cornell</a>
<li><a href="http://www.cs.purdue.edu/homes/hosking/502/index.html">Compiler course at Purdue</a>
<li><a href="http://web.cecs.pdx.edu/~apt/cs321_2004/">Compiler course at Portland State</a>
<li><a href="http://www.cs.rutgers.edu/~ryder/415/">Compiler course at Rutgers</a>
</ul>
</dl>
<p>
<hr>
<P>
<ADDRESS>Last modified: 01/06/09 by <A HREF="http://lambda.uta.edu/">Leonidas Fegaras</A></ADDRESS>
